commonlibsse_ng\re\b/
BSTSingleton.rs

1pub struct BSTSingletonExplicit<T> {
2    _marker: std::marker::PhantomData<T>,
3}
4
5pub struct BSTSingletonImplicit<T> {
6    _marker: std::marker::PhantomData<T>,
7}
8
9pub struct BSTSingletonSDMOpStaticBuffer<T> {
10    _marker: std::marker::PhantomData<T>,
11}
12
13// A: Allocator
14pub struct BSTSDMTraits<Type, Allocator> {
15    _marker: core::marker::PhantomData<(Type, Allocator)>,
16}
17
18pub struct BSTSingletonSDMBase<T, A> {
19    pub traits: BSTSDMTraits<T, A>,
20    pub allocator: A,
21}
22
23/// This is used when the inherited class does not enable Empty Base Optimization and a u8 address is allocated.
24///
25/// If Empty Base Optimization works, it should be omitted. (Otherwise, the memory layout will not match.)
26pub struct BSTSingletonSDM<T, A = BSTSingletonSDMOpStaticBuffer<T>> {
27    pub __base: BSTSingletonSDMBase<T, A>,
28    /// C++ Empty class unique address.
29    pub address: u8,
30}